Messages can be transmitted over multiple channels that span between a transmitter and one or more receivers. These channels can be congested due to various reasons including processing resource limitations, memory resource limitation, inefficient load balancing, transient failures along the data paths, and the like.
The congestion level of channels can change rapidly and in many cases can be hard to predict. Typically a scheduler that schedules a transmission of messages over multiple channels can not track these congestion level changes and multiple messages are sent over congested channels.
It is known in the art that transmitting a message over a congested channel has many downfalls, including but not limited to higher probability of message transmission failure (complete failure or partial failure), relatively long latency and, additionally or alternatively, increasing the congestion level of that channel. These downfalls can have an even greater impact when the messages belong to real time traffic and, additionally or alternatively, are included within frames that can be totally corrupted even if a portion of the frame or picture is dropped.
When the messages are transmitted by using unreliable delivery methods (UDP, raw IP), the dropped message is not re-transmitted to its target. When the messages are transmitted by using reliable delivery methods (TCP), the transmitter will be notified, in some way, about the lost messages and eventually will retransmit them.
However, since retransmission consumes time and several retransmissions may be required, a message can miss its deadline that is implicitly determined by its latency budget. A deadline miss has a negative impact in soft real-time systems and is unacceptable in hard-real time systems. For example, an unmanned aerial vehicle can crash into another flying object or a building if a command to change direction is delivered too late.
There is a need to provide an efficient method, system and computer program product for transmitting data entities.